<?php
/**
 * Clase Base DP para BasePoRecepcionDP
 *
 * @package    
 * @subpackage BasePoRecepcionDP
 * @author     hans
 * @version    SVN:: BasePoRecepcionDP.class.php,v 1.1 2012-03-18 20:28:48 Hans.parra Exp $
 */

require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/common/arrayClass.class.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/gourmet-express/trunk/src/class/im/mov/BN/PoRecepcionBN.class.php');


abstract class BasePoRecepcionDP extends PoRecepcionBN
{
  /* N�mero de registros afectados */
  private $nRowsAffected;

  public function __construct($bSetDefault = true)
  {
    if( $bSetDefault instanceof PoRecepcionBN )
    {
      $o_PoRecepcionBN = $bSetDefault;
      if($o_PoRecepcionBN->getRcpId()) : $this->setRcpId($o_PoRecepcionBN->getRcpId()); endif;
      if($o_PoRecepcionBN->getTipo()) : $this->setTipo($o_PoRecepcionBN->getTipo()); endif;
      if($o_PoRecepcionBN->getPoNro()) : $this->setPoNro($o_PoRecepcionBN->getPoNro()); endif;
      if($o_PoRecepcionBN->getAlmId()) : $this->setAlmId($o_PoRecepcionBN->getAlmId()); endif;
      if($o_PoRecepcionBN->getProveedorId()) : $this->setProveedorId($o_PoRecepcionBN->getProveedorId()); endif;
      if($o_PoRecepcionBN->getProveedorNombre()) : $this->setProveedorNombre($o_PoRecepcionBN->getProveedorNombre()); endif;
      if($o_PoRecepcionBN->getContacto()) : $this->setContacto($o_PoRecepcionBN->getContacto()); endif;
      if($o_PoRecepcionBN->getDocIngresoTipo()) : $this->setDocIngresoTipo($o_PoRecepcionBN->getDocIngresoTipo()); endif;
      if($o_PoRecepcionBN->getDocIngresoNum()) : $this->setDocIngresoNum($o_PoRecepcionBN->getDocIngresoNum()); endif;      
      if($o_PoRecepcionBN->getFacturaNum()) : $this->setFacturaNum($o_PoRecepcionBN->getFacturaNum()); endif;
      if($o_PoRecepcionBN->getMoneda()) : $this->setMoneda($o_PoRecepcionBN->getMoneda()); endif;
      if($o_PoRecepcionBN->getFechaDocIngreso()) : $this->setFechaDocIngreso($o_PoRecepcionBN->getFechaDocIngreso()); endif;
      if($o_PoRecepcionBN->getFechaIngreso()) : $this->setFechaIngreso($o_PoRecepcionBN->getFechaIngreso()); endif;
      if($o_PoRecepcionBN->getFechaFactura()) : $this->setFechaFactura($o_PoRecepcionBN->getFechaFactura()); endif;
      if($o_PoRecepcionBN->getFlete()) : $this->setFlete($o_PoRecepcionBN->getFlete()); endif;
      if($o_PoRecepcionBN->getTotalBruto()) : $this->setTotalBruto($o_PoRecepcionBN->getTotalBruto()); endif;
      if($o_PoRecepcionBN->getDcto()) : $this->setDcto($o_PoRecepcionBN->getDcto()); endif;
      if($o_PoRecepcionBN->getNeto()) : $this->setNeto($o_PoRecepcionBN->getNeto()); endif;
      if($o_PoRecepcionBN->getObs()) : $this->setObs($o_PoRecepcionBN->getObs()); endif;
      if($o_PoRecepcionBN->getStatus()) : $this->setStatus($o_PoRecepcionBN->getStatus()); endif;
      if($o_PoRecepcionBN->getCreaUsr()) : $this->setCreaUsr($o_PoRecepcionBN->getCreaUsr()); endif;
      if($o_PoRecepcionBN->getCreaFecha()) : $this->setCreaFecha($o_PoRecepcionBN->getCreaFecha()); endif;
      if($o_PoRecepcionBN->getModifUsr()) : $this->setModifUsr($o_PoRecepcionBN->getModifUsr()); endif;
      if($o_PoRecepcionBN->getModifFecha()) : $this->setModifFecha($o_PoRecepcionBN->getModifFecha()); endif;
    }
  }

  /* Obtiene el n�mero de registros afectados */
  public function getRowsAffected()
  {
    return $this->nRowsAffected;
  }

  public function save()
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $this->setRcpId($this->getSecuencia());
      if($this->getRcpId()){
        $a_Fields = array();

        if($this->getRcpId()) : $a_Fields['rcp_id'] = ($this->getRcpId()); endif;
        if($this->getTipo()) : $a_Fields['rcp_tipo'] = ($this->getTipo()); endif;
        if($this->getPoNro()) : $a_Fields['rcp_poNum'] = ($this->getPoNro()); endif;
        if($this->getAlmId()) : $a_Fields['rcp_almId'] = ($this->getAlmId()); endif;
        if($this->getProveedorId()) : $a_Fields['rcp_proveedorId'] = ($this->getProveedorId()); endif;
        if($this->getProveedorNombre()) : $a_Fields['rcp_proveedorNombre'] = ($this->getProveedorNombre()); endif;
        if($this->getContacto()) : $a_Fields['rcp_contacto'] = ($this->getContacto()); endif;
        if($this->getDocIngresoNum()) : $a_Fields['rcp_docIngNum'] = ($this->getDocIngresoNum()); endif;
        if($this->getDocIngresoTipo()) : $a_Fields['rcp_docIngTipo'] = ($this->getDocIngresoTipo()); endif;        
        if($this->getFacturaNum()) : $a_Fields['rcp_facturaNum'] = ($this->getFacturaNum()); endif;
        if($this->getMoneda()) : $a_Fields['rcp_moneda'] = ($this->getMoneda()); endif;
        if($this->getFechaDocIngreso()) : $a_Fields['rcp_fechaDocIng'] = ($this->getFechaDocIngreso()); endif;
        if($this->getFechaIngreso()) : $a_Fields['rcp_fechaIngreso'] = ($this->getFechaIngreso()); endif;
        if($this->getFechaFactura()) : $a_Fields['rcp_fechaFactura'] = ($this->getFechaFactura()); endif;
        if($this->getFlete()) : $a_Fields['rcp_flete'] = ($this->getFlete()); endif;
        if($this->getTotalBruto()) : $a_Fields['rcp_totalBruto'] = ($this->getTotalBruto()); endif;
        if($this->getDcto()) : $a_Fields['rcp_dcto'] = ($this->getDcto()); endif;
        if($this->getNeto()) : $a_Fields['rcp_neto'] = ($this->getNeto()); endif;
        if($this->getObs()) : $a_Fields['rcp_obs'] = ($this->getObs()); endif;
        if($this->getStatus()) : $a_Fields['rcp_status'] = ($this->getStatus()); endif;
        if($this->getCreaUsr()) : $a_Fields['rcp_creaUsr'] = ($this->getCreaUsr()); endif;
        if($this->getCreaFecha()) : $a_Fields['rcp_creaFecha'] = ($this->getCreaFecha()); endif;
        if($this->getModifUsr()) : $a_Fields['rcp_modifUsr'] = ($this->getModifUsr()); endif;
        if($this->getModifFecha()) : $a_Fields['rcp_modifFecha'] = ($this->getModifFecha()); endif;

        $sStringField = arrayClass::implode_keys(',', $a_Fields);
        $sStringValue = "'".implode("','", $a_Fields)."'";

        $sql = "INSERT INTO po_recepcion (".$sStringField.") VALUES (".$sStringValue.");";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows();
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function update()
  {
    
    try
    {
      if($this->getRcpId())
      {
        $a_Fields = array();

        if($this->getRcpId()) : $a_Fields['rcp_id'] = ($this->getRcpId()); endif;
        if($this->getTipo()) : $a_Fields['rcp_tipo'] = ($this->getTipo()); endif;
        if($this->getPoNro()) : $a_Fields['rcp_poNum'] = ($this->getPoNro()); endif;
        if($this->getAlmId()) : $a_Fields['rcp_almId'] = ($this->getAlmId()); endif;
        if($this->getProveedorId()) : $a_Fields['rcp_proveedorId'] = ($this->getProveedorId()); endif;
        if($this->getProveedorNombre()) : $a_Fields['rcp_proveedorNombre'] = ($this->getProveedorNombre()); endif;
        if($this->getContacto()) : $a_Fields['rcp_contacto'] = ($this->getContacto()); endif;
        if($this->getDocIngresoNum()) : $a_Fields['rcp_docIngNum'] = ($this->getDocIngresoNum()); endif;
        if($this->getDocIngresoTipo()) : $a_Fields['rcp_docIngTipo'] = ($this->getDocIngresoTipo()); endif;        
        if($this->getFacturaNum()) : $a_Fields['rcp_facturaNum'] = ($this->getFacturaNum()); endif;
        if($this->getMoneda()) : $a_Fields['rcp_moneda'] = ($this->getMoneda()); endif;
        if($this->getFechaDocIngreso()) : $a_Fields['rcp_fechaDocIng'] = ($this->getFechaDocIngreso()); endif;
        if($this->getFechaIngreso()) : $a_Fields['rcp_fechaIngreso'] = ($this->getFechaIngreso()); endif;
        if($this->getFechaFactura()) : $a_Fields['rcp_fechaFactura'] = ($this->getFechaFactura()); endif;
        if($this->getFlete()) : $a_Fields['rcp_flete'] = ($this->getFlete()); endif;
        if($this->getTotalBruto()) : $a_Fields['rcp_totalBruto'] = ($this->getTotalBruto()); endif;
        if($this->getDcto()) : $a_Fields['rcp_dcto'] = ($this->getDcto()); endif;
        if($this->getNeto()) : $a_Fields['rcp_neto'] = ($this->getNeto()); endif;
        if($this->getObs()) : $a_Fields['rcp_obs'] = ($this->getObs()); endif;
        if($this->getStatus()) : $a_Fields['rcp_status'] = ($this->getStatus()); endif;
        if($this->getCreaUsr()) : $a_Fields['rcp_creaUsr'] = ($this->getCreaUsr()); endif;
        if($this->getCreaFecha()) : $a_Fields['rcp_creaFecha'] = ($this->getCreaFecha()); endif;
        if($this->getModifUsr()) : $a_Fields['rcp_modifUsr'] = ($this->getModifUsr()); endif;
        if($this->getModifFecha()) : $a_Fields['rcp_modifFecha'] = ($this->getModifFecha()); endif;

        $sStringField = arrayClass::implode_key_value(',', $a_Fields);

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "UPDATE po_recepcion SET ".$sStringField." WHERE 1 AND rcp_id='".$this->getRcpId()."';";
        $result = mysql_query($sql);
        if($result)
        {
          $this->nRowsAffected = (int) mysql_affected_rows();
        }
        else
        {
          throw new Exception( mysql_error() );
        }
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  public function delete()
  {
    try
    {
      if($this->getRcpId())
      {
        $a_Fields = array();

        $o_conexion = new BaseDatos();
        $con = $o_conexion->conectar();
        $sql = "DELETE FROM po_recepcion WHERE 1 AND rcp_id='".$this->getRcpId()."';"; 
        $result = mysql_query($sql);
        
      }
      else
      {
        throw new Exception( 'El id no esta registrado.');
      }
    }
    catch ( Exception $o_Error )
    {
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
    return true;
  }

  /* B�squeda del registro por la llave primaria */
  public static function selectByPK($vRcpId)
  {
    try
    {
      $o_conexion = new BaseDatos();
      $con = $o_conexion->conectar();
      $sql = "SELECT rcp_id, rcp_tipo, rcp_poNum, rcp_almId, rcp_proveedorId, rcp_proveedorNombre, rcp_contacto, rcp_docIngNum,rcp_docIngTipo, rcp_facturaNum, rcp_moneda, rcp_fechaDocIng, rcp_fechaIngreso, rcp_fechaFactura, rcp_flete, rcp_totalBruto, rcp_dcto, rcp_neto, rcp_obs, rcp_status, rcp_creaUsr, rcp_creaFecha, rcp_modifUsr, rcp_modifFecha FROM po_recepcion WHERE 1 AND rcp_id='".$vRcpId."'; ";
        $result = mysql_query($sql);
      $o_Propel = $result ? mysql_fetch_object($result) : null;
      
      return $o_Propel?self::insertObjectBN($o_Propel):null;

    }catch ( Exception $o_Error ){
      throw new Exception($o_Error->getMessage().' en '.$o_Error->getFile().' linea '.$o_Error->getLine());
    }
  }

  /* Devuelve un objeto con m�todos de acceso */
  private function insertObjectBN($o_propel){
    $o_PoRecepcionDP = new PoRecepcionBN();
    $o_PoRecepcionDP->setRcpId($o_propel->rcp_id);
    $o_PoRecepcionDP->setTipo($o_propel->rcp_tipo);
    $o_PoRecepcionDP->setPoNro($o_propel->rcp_poNum);
    $o_PoRecepcionDP->setAlmId($o_propel->rcp_almId);
    $o_PoRecepcionDP->setProveedorId($o_propel->rcp_proveedorId);
    $o_PoRecepcionDP->setProveedorNombre($o_propel->rcp_proveedorNombre);
    $o_PoRecepcionDP->setContacto($o_propel->rcp_contacto);
    $o_PoRecepcionDP->setDocIngresoNum($o_propel->rcp_docIngNum);
    $o_PoRecepcionDP->setDocIngresoTipo($o_propel->rcp_docIngTipo);
    $o_PoRecepcionDP->setFacturaNum($o_propel->rcp_facturaNum);
    $o_PoRecepcionDP->setMoneda($o_propel->rcp_moneda);
    $o_PoRecepcionDP->setFechaDocIngreso($o_propel->rcp_fechaDocIng);
    $o_PoRecepcionDP->setFechaIngreso($o_propel->rcp_fechaIngreso);
    $o_PoRecepcionDP->setFechaFactura($o_propel->rcp_fechaFactura);
    $o_PoRecepcionDP->setFlete($o_propel->rcp_flete);
    $o_PoRecepcionDP->setTotalBruto($o_propel->rcp_totalBruto);
    $o_PoRecepcionDP->setDcto($o_propel->rcp_dcto);
    $o_PoRecepcionDP->setNeto($o_propel->rcp_neto);
    $o_PoRecepcionDP->setObs($o_propel->rcp_obs);
    $o_PoRecepcionDP->setStatus($o_propel->rcp_status);
    $o_PoRecepcionDP->setCreaUsr($o_propel->rcp_creaUsr);
    $o_PoRecepcionDP->setCreaFecha($o_propel->rcp_creaFecha);
    $o_PoRecepcionDP->setModifUsr($o_propel->rcp_modifUsr);
    $o_PoRecepcionDP->setModifFecha($o_propel->rcp_modifFecha);
    return $o_PoRecepcionDP;
  }
}